﻿Option Explicit On
Option Strict On

Imports System
Imports System.ServiceModel

Imports ACOMDirector
Imports ACOMDirector.Framework.Hardware

Namespace Framework.Hardware.Remoting

    ''' <summary>
    ''' Interface Defining the WCF Service Contract for the remotable state manager
    ''' </summary>
    ''' <remarks></remarks>
    <ServiceContract(SessionMode:=SessionMode.Required, CallBackContract:=GetType(IStateManagerCallbacks), ProtectionLevel:=Net.Security.ProtectionLevel.None)> _
    Public Interface IStateManager

        <System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")> _
        <OperationContract()> _
        Function GetCOMPort() As String

        <OperationContract(IsOneWay:=True)> _
        Sub SetCOMPort(ByVal value As String)

        <System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")> _
        <OperationContract()> _
        Function GetCOMPortOpen() As Boolean

        <System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")> _
        <OperationContract()> _
        Function GetSupportsRemotePowerOn() As Boolean

        <System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")> _
        <OperationContract()> _
        Function GetState() As AmplifierState

        <System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")> _
        <OperationContract()> _
        Function GetUIState() As UIState

        <OperationContract(IsOneway:=True, IsInitiating:=True)> _
        Sub SubscribeEvents()

        <OperationContract(IsOneway:=True, IsTerminating:=True)> _
        Sub UnsubscribeEvents()

        <OperationContract(IsOneWay:=True)> _
        Sub OperateStandby()

        <OperationContract(IsOneWay:=True)> _
        Sub OnOff()

        <OperationContract(IsOneWay:=True)> _
        Sub SelectAntenna0()

        <OperationContract(IsOneWay:=True)> _
        Sub SelectAntenna1()

        <OperationContract(IsOneWay:=True)> _
        Sub SelectAntenna2()

        <OperationContract(IsOneWay:=True)> _
        Sub SelectAntenna3()

        <OperationContract(IsOneWay:=True)> _
        Sub SelectAntenna4()

        <OperationContract(IsOneWay:=True)> _
        Sub SelectAntenna5()

        <OperationContract(IsOneWay:=True)> _
        Sub SelectAntenna6()

        <OperationContract(IsOneWay:=True)> _
        Sub SelectAntenna7()

        <OperationContract(IsOneWay:=True)> _
        Sub SelectAntenna8()

        <OperationContract(IsOneWay:=True)> _
        Sub SelectAntenna9()

        <OperationContract(IsOneWay:=True)> _
        Sub Connect()

        <OperationContract(IsOneWay:=True)> _
        Sub Disconnect()

        <OperationContract(IsOneWay:=True)> _
        Sub StartMeasuring(ByVal MetricA As MeasurementMetricType, ByVal MetricB As MeasurementMetricType)

        <OperationContract(IsOneWay:=True)> _
        Sub StopMeasuring()

        <OperationContract(IsOneWay:=True)> _
        Sub SetMetricB(ByVal Metric As MeasurementMetricType)

        <OperationContract(IsOneWay:=True)> _
        Sub SetMetricA(ByVal Metric As MeasurementMetricType)

        <OperationContract(IsOneWay:=True)> _
        Sub SetFrequencyBand(ByVal FrequencyHertz As Integer)

    End Interface

End Namespace